# pandas做数据处理的，类似spark sql 中的DSL

import pandas as pd

# Series:代表一个序列，相当于一列
series = pd.Series(data=[1213, 123, 3, 4, 5, 6], index=[0, 1, 2, 3, 4, 5])
print(series)
# 通过索引获取数据
print(series[0])

users = {
    "name": ["张三", "李四", "王五"],
    "age": [23, 24, 25]
}
# 构建DF
users_df = pd.DataFrame(users)
print(users_df)

# 通过列名选择列
print(users_df["name"])

# 布尔值索引
print(users_df[users_df["age"] > 23])

print("=" * 100)

# 删除列，返回一个新的DF
print(users_df.drop("name", axis=1))

# 删除列,再源df上删除
del users_df["age"]

print(users_df)

print("=" * 100)

# 读取学生表
# read_csv: 默认数据中第一行作为列名
students = pd.read_csv(
    "../data/students.txt",
    sep=",",
    names=["id", "name", "age", "sex", "clazz"],  # 指定列名
    encoding="UTF-8")
print(students)

# 统计班级人数
clazz_num = students.groupby("clazz")["id"].count()
print(clazz_num)

# 取前十和后十
print(students.head(10))
print(students.tail(10))

# 取出性别为男的学生
print(students[students["sex"] == "男"])
print(students[students["age"] == 23])

# 统计男女的人数
print(students["sex"].value_counts())

# matplotlib: 画图的工具
import matplotlib.pyplot as plt

# bar： 柱状图
students["sex"].value_counts().plot.pie()

plt.show()
